/*
 * PLShader.h
 *
 *  Created on: 23.02.2013
 *      Author: semenyakinVS
 */
///////////////////////////////////////////////////////////////////////////////
#ifndef PLSHADER_H_
#define PLSHADER_H_

///////////////////////////////////////////////////////////////////////////////
#define GLEW_STATIC

#include "glew/glew.h"

#include <list>

///////////////////////////////////////////////////////////////////////////////
class PLShader
{
private:

	//////////////////////////////////////////////////////////////////////
	std::list<GLuint> _shaderObjectHandles;
	GLuint _shaderProgramHandle;

public:

	//////////////////////////////////////////////////////////////////////
	enum shaderType
	{
		vertexShader,
		fragmentShader
	};

	//////////////////////////////////////////////////////////////////////
	PLShader();

	void attachShader(shaderType inShaderType, const char *inSourceCode);
	void link();

	GLuint handler();

	virtual ~PLShader();
};

///////////////////////////////////////////////////////////////////////////////
#endif /* PLSHADER_H_ */
